/*题目描述
        小明去了一家大型商场，拿到了一个购物车，并开始购物。请你设计一个购物车管理器，记录商品添加到购物车的信息（商品名称和购买数量），
        并在购买结束后打印出商品清单。（在整个购物过程中，小明只有一个购物车实例存在）。
        输入描述
        输入包含若干行，每行包含两部分信息，分别是商品名称和购买数量。商品名称和购买数量之间用空格隔开。
        输出描述
        输出包含小明购物车中的所有商品及其购买数量。每行输出一种商品的信息，格式为 "商品名称 购买数量"。
        输入示例
        Apple 3
        Banana 2
        Orange 5
        输出示例
        Apple 3
        Banana 2
        Orange 5*/

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class single_pattern {
    public static void main(String[] args) {
        ShoppingCartManager cart = ShoppingCartManager.getInstance();
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            String itemName = scanner.next();
            int quantity = scanner.nextInt();
            // 获取购物⻋实例并添加商品
            cart.addToCart(itemName, quantity);
        }
        // 输出购物⻋内容
        cart.viewCart();
    }
}

class ShoppingCartManager{
    private static final ShoppingCartManager instance=new ShoppingCartManager();

    HashMap<String,Integer> cart=new HashMap<>();

    private ShoppingCartManager() {


    }

    public static ShoppingCartManager getInstance(){
        return instance;
    }

    // 添加商品到购物⻋
    public void addToCart(String itemName, int quantity) {
        cart.put(itemName, cart.getOrDefault(itemName, 0) + quantity);
    }

    // 查看购物⻋
    public void viewCart() {
        for (Map.Entry<String, Integer> entry : cart.entrySet()) {
            System.out.println(entry.getKey() + " " + entry.getValue());
        }
    }

    public void removeFromCart(String itemName, int quantity) {
        if (cart.containsKey(itemName)) {
            int currentQuantity = cart.get(itemName);
            if (quantity >= currentQuantity) {
                cart.remove(itemName); // Remove the item from the cart
            } else {
                cart.put(itemName, currentQuantity - quantity); // Update the quantity
            }
        }
    }

}
